package gui;

import javax.faces.bean.ManagedBean;

import negocio.Fachada;
import basicas.organizacionais.Setor;
import java.util.List;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;

@ManagedBean // @ManagedBean(name=�msg�)
public class SetorBean {

    private Setor setor;
    private List<Setor> listSetor;
    private int codigoBusca;
    private List<Setor> filteredSet;

    public SetorBean() {
        setor = new Setor();
    }

    public void inserir() {
        Fachada fachada = Fachada.getInstancia();
        try {
            if(validarForm(setor)){
                fachada.inserirSetor(setor);            
                setor = null;
            }
        } catch (Exception e) {
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR,"Erro", "Erro na operação"));
        }
    }

    public void alterar() {
        try {
            if(validarForm(setor)){
                Fachada.getInstancia().alterarSetor(setor);
            }
        } catch (Exception e) {
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR,"Erro", "Erro na operação"));
        }
    }

    public void remover(Setor setor) {
        try {
            Fachada.getInstancia().removerSetor(setor);
        } catch (Exception e) {
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR,"Erro", "Erro na operação"));
        }
    }

    public String alterarSetor(Setor psetor) {
        setor = psetor;
        return "alterarsetor.xhtml";
    }

    public void buscar(){
        setor = Fachada.getInstancia().getSetorByCodigo(codigoBusca);
        if(setor == null){
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_WARN,"Setor não encontrado!", ""));
        }
    }
    
     private boolean validarForm(Setor setor){
        boolean critica = false;
        
        if(setor.getDescricao().equals("")){
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_WARN,"Preencha a descrição!", ""));
            critica = true;
        }
        if(setor.getSigla().equals("")){
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_WARN,"Preencha a sigla!", ""));
            critica = true;
        }         
        
        return critica ? false : true;
    }

    public List<Setor> getListSetor() {
        Fachada fachada = Fachada.getInstancia();
        listSetor = fachada.listarSetores();
        return listSetor;
    }

    public Setor getSetor() {
        return setor;
    }

    public void setSetor(Setor setor) {
        this.setor = setor;
    }

    public int getCodigoBusca() {
        return codigoBusca;
    }

    public void setCodigoBusca(int codigoBusca) {
        this.codigoBusca = codigoBusca;
    }

    public List<Setor> getFilteredSet() {
        return filteredSet;
    }

    public void setFilteredSet(List<Setor> filteredSet) {
        this.filteredSet = filteredSet;
    }
   
    
}
